using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using ExcellentProjectPlus.Infraestructura.Data.Examenes.Modelo.Mapping;
using ExcellentProjectPlus.Dominio.Examenes.Entidades;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data.Entity.Core.Objects;
using System.Linq;

namespace ExcellentProjectPlus.Infraestructura.Data.Examenes.Modelo
{
    public partial class ExamenesContext : DbContext
    {
        static ExamenesContext()
        {
            Database.SetInitializer<ExamenesContext>(null);
        }

        public ExamenesContext()
            : base("Name=ExamenesContext")
        {
        }

        public DbSet<Calendarizacion> Calendarizaciones { get; set; }
        public DbSet<Examen> Examenes { get; set; }
        public DbSet<RespuestaExamen> RespuestasExamen { get; set; }
        public DbSet<InformacionCalendarizacionExamen> InformacionCalendarizacionExamenes { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new CalendarizacionMap());
            modelBuilder.Configurations.Add(new ExamenMap());
            modelBuilder.Configurations.Add(new RespuestaExamenMap());
            modelBuilder.Configurations.Add(new InformacionCalendarizacionExamenMap());
        }


        public virtual List<Calendarizacion> ObtenerExamenesPorEstudiante(int idCurso, int idEstudiante)
        {
            var idCursoParameter = new SqlParameter("idCurso", idCurso);
            var idEstudianteParameter = new SqlParameter("idEstudiante", idEstudiante);
            return Database.SqlQuery<Calendarizacion>("ObtenerCalendarizacionEstudiantes @idCurso, @idEstudiante", idCursoParameter, idEstudianteParameter).ToList();
        }
    }
}
